package br.com.moove.bananasfit.model;

import java.io.Serializable;

import org.json.JSONException;
import org.json.JSONObject;

public class PessoaFisica implements Serializable{

	private long id;
	private String nome;
	private String senha;
	private String telefone;
	private String cpf;
	private String email;
	private boolean isAdmin;
	private boolean isHabilitado;

	private String celular;
	private int qtdMoeda;
	private Endereco endereco;

	public PessoaFisica(long id, String nome, String senha, String telefone,
			String cpf, String email, boolean isAdmin, String celular,
			int qtdMoeda, Endereco endereco) {
		super();
		this.id = id;
		this.nome = nome;
		this.senha = senha;
		this.telefone = telefone;
		this.cpf = cpf;
		this.email = email;
		this.isAdmin = isAdmin;
		this.celular = celular;
		this.qtdMoeda = qtdMoeda;
		this.endereco = endereco;
	}

	public PessoaFisica() {
		super();
		endereco = new Endereco();
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public boolean getIsAdmin() {
		return isAdmin;
	}

	public void setIsAdmin(boolean isAdmin) {
		this.isAdmin = isAdmin;
	}

	public boolean getIsHabilitado() {
		return isHabilitado;
	}

	public void setIsHabilitado(boolean isHabilitado) {
		this.isHabilitado = isHabilitado;
	}

	public String getCelular() {
		return celular;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}

	public int getQtdMoeda() {
		return qtdMoeda;
	}

	public void setQtdMoeda(int qtdMoeda) {
		this.qtdMoeda = qtdMoeda;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public String validarCadastroPessoaFisica() {
		if (this.getNome().equals("")) {
			return "Campo Nome em Branco";
		} else if (this.getSenha().equals("")) {
			return "Campo Senha em Branco";
		} else if (this.getTelefone().equals("")) {
			return "Campo Telefone em Branco";
			/*
			 * } else if (this.getCelular().equals("")) { return
			 * "Campo Celular em Branco";
			 */
		} else if (this.getCpf().equals("")) {
			return "Campo Cpf em Branco";
		} else if (this.getEmail().equals("")) {
			return "Campo Email em Branco";
		} else if (this.getEndereco().getBairro().equals("")) {
			return "Campo Bairro em Branco";
		} else if (this.getEndereco().getCidade().equals("")) {
			return "Campo Cidade em Branco";
		} else if (this.getEndereco().getCep().equals("")) {
			return "Campo Cep em Branco";
		} else if (this.getEndereco().getRua().equals("")) {
			return "Campo Rua em Branco";
		} else if (this.getEndereco().getNumero().equals("")) {
			return "Campo Numero em Branco";
		} else {
			return null;
		}

	}

	public String validarLoginPessoaFisica() {
		if (this.getEmail().equals("")) {
			return "Campo Telefone em Branco";
		} else if (this.getSenha().equals("")) {
			return "Campo Senha em Branco";
		} else {
			return null;
		}
	}

	public JSONObject getJsonObject() {
		try {
			JSONObject jsonObject = new JSONObject();
			jsonObject.put("Chave", this.getId());
			jsonObject.put("Nome", this.getNome());
			jsonObject.put("cpf", this.getCpf());
			jsonObject.put("QuantidadeMoedas", this.getQtdMoeda());
			jsonObject.put("IsAdmnistrador", this.getIsAdmin());
			jsonObject.put("Email", this.getEmail());
			jsonObject.put("Password", this.getSenha());
			jsonObject.put("IsHabilitado", this.getIsHabilitado());
			jsonObject.put("Celular", this.getCelular());
			jsonObject.put("Telefone", this.getTelefone());
			JSONObject jsonEndereco = new JSONObject();
			jsonEndereco.put("Bairro", this.getEndereco().getBairro());
			jsonEndereco.put("Cep", this.getEndereco().getCep());
			jsonEndereco.put("Cidade", this.getEndereco().getCidade());
			jsonEndereco.put("Estado", this.getEndereco().getEstado());
			jsonEndereco.put("Numero", this.getEndereco().getNumero());
			jsonEndereco.put("Rua", this.getEndereco().getRua());
			jsonEndereco.put("Chave", this.getEndereco().getId());
			jsonEndereco
					.put("Complemento", this.getEndereco().getComplemento());
			jsonObject.put("Endereco", jsonEndereco);
			System.out.println(jsonObject.toString());
			return jsonObject;
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}

	public JSONObject getJsonObjectLogin() {
		try {
			JSONObject jsonObject = new JSONObject();
			jsonObject.put("Email", this.getEmail());
			jsonObject.put("Password", this.getSenha());
			System.out.println(jsonObject.toString());
			return jsonObject;
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}

	public void carregarJson(JSONObject object) {
		try {
			this.setId(object.getLong("Chave"));
			this.setNome(object.getString("Nome"));
			//this.setCpf(object.getString("Cpf"));
			//this.setTelefone(object.getString("Telefone"));
			//this.setCelular(object.getString("Celular"));
			this.setEmail(object.getString("Email"));
			this.setQtdMoeda(object.getInt("QuantidadeMoedas"));
			this.setIsAdmin(object.getBoolean("IsAdmin"));
			//this.setSenha(object.getString("Senha"));
//			this.getEndereco().setBairro(object.getJSONObject("Endereco").getString("Bairro"));
//			this.getEndereco().setCep(object.getJSONObject("Endereco").getString("CEP"));
//			this.getEndereco().setCidade(object.getJSONObject("Endereco").getString("Cidade"));
//			this.getEndereco().setEstado(object.getJSONObject("Endereco").getString("Estado"));
//			this.getEndereco().setNumero(object.getJSONObject("Endereco").getString("Numero"));
//			this.getEndereco().setComplemento(object.getJSONObject("Endereco").getString("Complemento"));
//			this.getEndereco().setId(object.getJSONObject("Endereco").getLong("Id"));
//			this.getEndereco().setRua(object.getJSONObject("Endereco").getString("Rua"));
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
